$(document).ready(function(){

	// Ocultamos los mensajes de error siempre
	$('#mensaje_error_acceso').hide();
	$('#mensaje_error_recuperar').hide();
	$('#mensaje_exito_recuperar').hide();
	// Preparamos los oyentes de cambio de ventanas entre acceso y olvido
	asignaOyentesValidaconFormularios();
	mostrarRecuperarPassword();
	
	// Añadimos las reglas de validación del formulario
	validarFormularioSignin();
	validarFormularioOlvidoPassword();

	// Adaptamos el fondo y la imagen
	redimensionarBG();

});

							/*********** CAMBIO DE PANELES **************/

/* Muestra o oculta la ventana de recordar contraseña */
function mostrarRecuperarPassword(){
	$('#olvido_password_link').click(function () {
		// Ocultamos el mensaje de acceso por si existiese
		$('#mensaje_error_acceso').hide();
		$('#signin_form_acceso').hide();
		$('#contenedor_form_reset_password').show();
		return false;
	});
	$('#contenedor_form_reset_password .close').click(function () {
		// Ocultamos el mensaje de recuperar por si existiese
		$('#mensaje_error_recuperar').hide();
		$('#mensaje_exito_recuperar').hide();
		$('#contenedor_form_reset_password').hide();
		$('#signin_form_acceso').show();
		return false;
	});
}

							/********** FUNCIONES DE VALIDACIÓN **********/

/* Asigna las funciones de onClick a los botones de los dos froms*/
function asignaOyentesValidaconFormularios(){
	$('#signin_acceso_submit').click(onClickBlotonSubmitFormSignin);
	$('#signin_recuperar_submit').click(onClickBlotonSubmitFormRecuperar);
}

/* OnClick del botón submit del formulario de acceso*/
function onClickBlotonSubmitFormSignin(event){
	// Anulamos la acción por defecto
	event.preventDefault();
	// Ocultamos el mensaje de error si existiese
	$('#mensaje_error_acceso').fadeOut(400);
	if($('#signin_form_acceso').valid()){
		// Mostramos mensaje de cargado
		$('#signin_acceso_submit').button('loading');
		// Enviamos Post al Servidor
		enviarFormAcceso();
	}
}

/* OnClick del botón submit del formulario de recuperación de contraseña*/
function onClickBlotonSubmitFormRecuperar(event){
	// Anulamos la acción por defecto
	event.preventDefault();
	// Ocultamos el mensaje de rror
	$('#mensaje_error_recuperar').fadeOut(400);
	$('#mensaje_exito_recuperar').fadeOut(400);
	if($('#signin_form_recuperar_password').valid()){
		// Mostramos mensaje de cargado
		$('#signin_recuperar_submit').button('loading');
		// Enviamos Post al Servidor
		enviarFormRecuperar();
	}
}

/* Valida el formulario de acceso*/
function validarFormularioSignin(){
	$('#signin_form_acceso').validate({
		rules: {
			'signin_acceso_idComercio': {
				required: true
			},
			'signin_acceso_password' : {
				required: true
			}
		},
		messages: {
			'signin_acceso_idComercio': {
				required: 'Introduce tu identificador de comercio'
			},
			'signin_acceso_password' : {
				required: 'Introduce tu contraseña'
			}
		}
	});
}

/* Valida el formulario de solicitar contraseña*/
function validarFormularioOlvidoPassword(){
	$('#signin_form_recuperar_password').validate({
		rules: {
			'signin_recuperar_email': {
				required: true,
				email : true
			}
		},
		messages: {
			'signin_recuperar_email': {
				required: 'Introduce tu dirección de email',
				email : 'Introduce una dirección de email correcta'
			}
		}
	});
}



							/********** FUNCIONES DE POST **********/

/* ACCESO */

function enviarFormAcceso () {
	datosEnvioAcceso = {};
	// Datos de Contacto
	datosEnvioAcceso.idComercio = $('#signin_acceso_idComercio').val();
	datosEnvioAcceso.password = $('#signin_acceso_password').val();
	datosEnvioAcceso.tokenCSRF = $('#signin_acceso_token_CSRF').val();
	datosEnvioAcceso.tipoFormulario = 'form_acceso';

	// JSON.stringfy(obj) transforma un objeto a una cadena de texto
	// JSON.parse(cadena) transforma una cadena en un objeto
	// Realizamos la peticion POST con el JSON de parametro
	$.post("../php/acceso/validarInicioSesionPortalWeb.php", {datosFormAcceso: JSON.stringify(datosEnvioAcceso)}, callbackFormAccesoExito).fail(failPostFormAcceso);
}


function callbackFormAccesoExito(data) {
	$('#signin_acceso_submit').button('reset');
	console.log(data);
	respuestaServidor = JSON.parse(data);
	if(respuestaServidor['exito']){
		// Vemos si se trata de un usuario, es decir un comercio
		if(respuestaServidor['perfil'] == 'Usuario'){
			// Redireccionamos a la pantalla principal del portal de comercios
			$(location).attr('href','./panel-control.html');
		// Administración
		}else{
			// Redireccionamos a la pantalla principal del portal de administración
			$(location).attr('href','./administracion/comercios.html');
		}
	}else{
		$('#mensaje_error_acceso').fadeIn(400);
	}
}

function failPostFormAcceso(data){
	$('#signin_acceso_submit').button('reset');
	$('#mensaje_error_acceso').fadeIn(400);
}

/* RECUPERAR */

function enviarFormRecuperar () {
	datosEnvioRecuperar = {};
	// Datos de Contacto
	datosEnvioRecuperar.email = $('#signin_recuperar_email').val();
	datosEnvioRecuperar.tokenCSRF = $('#signin_recuperar_token_CSRF').val();
	datosEnvioRecuperar.tipoFormulario = 'form_recuperar_password';
	// JSON.stringfy(obj) transforma un objeto a una cadena de texto
	// JSON.parse(cadena) transforma una cadena en un objeto
	// Realizamos la peticion POST con el JSON de parametro
	$.post("../php/acceso/recuperarPasswordComercioPortalWeb.php", {datosFormRecuperar: JSON.stringify(datosEnvioRecuperar)}, callbackFormRecuperarExito).fail(failPostFormRecuperar);
}


function callbackFormRecuperarExito(data) {
	$('#signin_recuperar_submit').button('reset');
	respuestaServidor = JSON.parse(data);
	if(respuestaServidor['exito']){
		// Mostramos el mensaje de exito
		$('#mensaje_exito_recuperar').fadeIn(400);
	}else{
		// Mostramos el mensaje de error
		$('#mensaje_error_recuperar').fadeIn(400);
	}
}

function failPostFormRecuperar(data){
	$('#signin_recuperar_submit').button('reset');
	$('#mensaje_error_recuperar').fadeIn(400);
}
							/********** FUNCIONES DEL BACKGROUND **********/


/* Redimensiona la imagen de fondo */
function redimensionarBG(){
	var $ph  = $('#page-signin-bg'), $img = $ph.find('> img');
	$(window).on('resize', function () {
		$img.attr('style', '');
		if ($img.height() < $ph.height()) {
			$img.css({
				height: '100%',
				width: 'auto'
			});
		}
	});
}